USE [ONLYCONTROL]
GO

/****** Object:  StoredProcedure [dbo].[sp_onlycontrol_sambdata]    Script Date: 07/05/2012 13:06:42 ******/
IF  EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[sp_onlycontrol_sambdata]') AND type in (N'P', N'PC'))
DROP PROCEDURE [dbo].[sp_onlycontrol_sambdata]
GO

USE [ONLYCONTROL]
GO

/****** Object:  StoredProcedure [dbo].[sp_onlycontrol_sambdata]    Script Date: 07/05/2012 13:06:42 ******/
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO








CREATE   PROCEDURE [dbo].[sp_onlycontrol_sambdata]
/******************************************************************************
Creado por: Stalin Mora 23/05/2012
Funcion: Pasar las marcaciones del sistema biometrico de cada usuario a la tabla de EVOLUTION
******************************************************************************/
(
@lunch1 int = 12,    
@lunch2 int = 15,
@salidaLunchHora int = 12,
@salidaLunchMinuto int = 15,
@franjaSalida int = 5
)
AS
SET NOCOUNT ON

DECLARE 
	@_fecha_TIME	VARCHAR(10),
	@_ASIS_ID		NVARCHAR(6),
	@_CODIGO		VARCHAR(12), 
	@_FECHA			VARCHAR(10), 
	@_HORA			VARCHAR(8), 
	@_COD_RELOJ		VARCHAR(15),
	@_CODIGO_LUNCH	VARCHAR(12), 
	@_FECHA_LUNCH	VARCHAR(10), 
	@_HORA_LUNCH	VARCHAR(8),  
	@_COD_RELOJ_LUN	VARCHAR(12),
	@_CODIGO_ENT	VARCHAR(12),
	@_FECHA_ENT		VARCHAR(10),
	@_HORA_ENT		VARCHAR(8),
	@_COD_RELOJ_ENT	VARCHAR(12)
declare @user_data VARCHAR(10),
	@_codigo_data VARCHAR(10)

SET @_fecha_TIME = '04/07/2012'--CONVERT(VARCHAR(10),GETDATE(),103);
/*FIN DE DECLARACIONES*/
SELECT
	OC.ASIS_ID,
	CAST(NO.NOMINA_EMPC AS VARCHAR(12)) AS CODIGO,
	CAST(NO.NOMINA_EMPE AS VARCHAR(12)) AS CODIGO_ALTERNO,
	CONVERT(VARCHAR(10),OC.ASIS_ING,103) AS FECHA, 
	CONVERT(CHAR(8),OC.ASIS_ING,108) AS HORA,
	--RIGHT('0'+CONVERT(VARCHAR(8),OC.ASIS_HORA,108),8) AS HORA,
	CAST(OC.ASIS_ZONA AS VARCHAR(15)) AS COD_RELOJ,
	OC.ASIS_TIPO AS TIPO
INTO #TEMPORAL_MARCACIONES
FROM dbo.ASISTNOW AS OC
	INNER JOIN dbo.NOMINA NO
	ON OC.ASIS_ID=NO.NOMINA_ID
WHERE OC.ASIS_F = 2
AND NO.NOMINA_EMPE IS NOT NULL
and CONVERT(VARCHAR(10),OC.ASIS_ING,103)=@_fecha_TIME

DECLARE user_marcaciones CURSOR FOR 
	SELECT DISTINCT CODIGO FROM #TEMPORAL_MARCACIONES ORDER BY CODIGO
OPEN user_marcaciones
FETCH user_marcaciones INTO @_CODIGO
WHILE(@@FETCH_STATUS = 0)
	BEGIN
		-------------------------------------------------------
		-----				HORA ENTRADA		---------------
		-------------------------------------------------------
		SET @_CODIGO_ENT = NULL
		SELECT TOP 1
			@_CODIGO_ENT = CODIGO_ALTERNO,
			@_FECHA_ENT = FECHA,
			@_HORA_ENT = MIN(HORA),
			@_COD_RELOJ_ENT = COD_RELOJ
		FROM #TEMPORAL_MARCACIONES
		WHERE 
		CODIGO=@_CODIGO AND FECHA = @_fecha_TIME AND TIPO='INGRESO'
		GROUP BY CODIGO_ALTERNO, FECHA, COD_RELOJ, HORA
		ORDER BY HORA
		set @_codigo_data = NULL
		select 
			@_codigo_data = MAX(CODIGO_ALTERNO)
		FROM #TEMPORAL_MARCACIONES
			where CODIGO=@_CODIGO
		set @user_data = NULL;
		select
		@user_data = rol_cod_emp
		from [produccion_db].data.dbo.tb_rol_registro
		where CONVERT(VARCHAR(10),rol_fecha,103)= @_fecha_TIME
		and rol_cod_emp=@_codigo_data
		and rol_registro=1
		if(@user_data IS NULL)
		BEGIN
			IF(@_CODIGO_ENT IS NOT NULL)
			/*INSEERTA HORA DE ENTRADA*/
			BEGIN
				INSERT INTO  hra_prod.dbo.TM_RELOJ VALUES(
				@_CODIGO_ENT,
				@_FECHA_ENT,
				@_HORA_ENT,
				@_COD_RELOJ_ENT)
			END
		END
		-------------------------------------------------------
		-----			HORA ENTRADA LUNCH	    ---------------
		-------------------------------------------------------
		SET @_CODIGO_LUNCH = NULL
		SELECT TOP 1
			@_CODIGO_LUNCH=CODIGO_ALTERNO,
			@_FECHA_LUNCH=FECHA,
			@_HORA_LUNCH=MAX(HORA),
			@_COD_RELOJ_LUN=COD_RELOJ
		FROM #TEMPORAL_MARCACIONES
			WHERE CODIGO=@_CODIGO AND FECHA = @_fecha_TIME
			AND TIPO LIKE 'BREAK-IN'
			AND DATEPART(HH,HORA) BETWEEN @lunch1 and @lunch2 
			GROUP BY CODIGO_ALTERNO, FECHA, COD_RELOJ, HORA
		ORDER BY HORA DESC
		set @user_data = NULL;
		select
		@user_data = rol_cod_emp
		from [produccion_db].data.dbo.tb_rol_registro
		where CONVERT(VARCHAR(10),rol_fecha,103)= @_fecha_TIME
		and rol_cod_emp=@_codigo_data
		and rol_registro=3
		if(@user_data IS NULL)
		BEGIN
		    /*LEER REGISTROS DE ENTRADA DE LUNCH*/
			if(@_CODIGO_LUNCH IS NOT NULL)
			BEGIN
				/*INSERTANDO HORA DE ENTRADA DE LUNCH*/
				INSERT INTO  hra_prod.dbo.TM_RELOJ VALUES(
					@_CODIGO_LUNCH,
					@_FECHA_LUNCH,
					@_HORA_LUNCH,
					@_COD_RELOJ_LUN)
			END
		END
		-------------------------------------------------------
		-----			HORA SALIDA LUNCH	    ---------------
		-------------------------------------------------------	
		set @user_data = NULL;
		select
		@user_data = rol_cod_emp
		from [produccion_db].data.dbo.tb_rol_registro
		where CONVERT(VARCHAR(10),rol_fecha,103)= @_fecha_TIME
		and rol_cod_emp=@_codigo_data
		and rol_registro=2
		if(@user_data IS NULL)
		BEGIN
			/*INSERTANDO HORA DE SALIDA DE LUNCH*/
			
				INSERT INTO  hra_prod.dbo.TM_RELOJ
				SELECT TOP 1
				CODIGO_ALTERNO,
				FECHA,
				MAX(HORA) AS HORA,
				COD_RELOJ
				FROM #TEMPORAL_MARCACIONES
				WHERE CODIGO=@_CODIGO AND FECHA = @_fecha_TIME
				AND DATEPART(HH,HORA) >= @salidaLunchHora
				and HORA <=  DATEADD(minute,-@salidaLunchMinuto,@_HORA_LUNCH)
				GROUP BY CODIGO_ALTERNO, FECHA, COD_RELOJ
				ORDER BY HORA DESC
		END	
		-------------------------------------------------------
		-----			HORA SALIDA	            ---------------
		-------------------------------------------------------	
		set @user_data = NULL;
		select
		@user_data = rol_cod_emp
		from [produccion_db].data.dbo.tb_rol_registro
		where CONVERT(VARCHAR(10),rol_fecha,103)= @_fecha_TIME
		and rol_cod_emp=@_codigo_data
		and rol_registro=4
		if(@user_data IS NULL)
		BEGIN
		/*INSERTANDO HORA DE SALIDA*/
			INSERT INTO hra_prod.dbo.TM_RELOJ
				SELECT TOP 1
				CODIGO_ALTERNO,
				FECHA,
				MAX(HORA) AS HORA,
				COD_RELOJ
				FROM #TEMPORAL_MARCACIONES
				WHERE CODIGO=@_CODIGO AND FECHA = @_fecha_TIME
				AND HORA >=  DATEADD(minute,@franjaSalida,@_HORA_ENT)
				GROUP BY CODIGO_ALTERNO, FECHA, COD_RELOJ
				ORDER BY HORA DESC
		END
	FETCH user_marcaciones INTO @_CODIGO	
	END
CLOSE user_marcaciones
DEALLOCATE user_marcaciones
DROP TABLE #TEMPORAL_MARCACIONES

-------------------------------------------------------------------------------------------------------


SET NOCOUNT OFF

UPDATE dbo.ASISTNOW SET ASIS_F = 1 WHERE CONVERT(VARCHAR(10), ASIS_FECHA,103)=@_fecha_TIME



GO


